//package com.zyf.cloud.common.utils;
//
//import com.bonade.common.support.decoder.BASE64Decoder;
//import com.bonade.common.support.decoder.BASE64Encoder;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.imageio.ImageIO;
//import javax.imageio.stream.ImageOutputStream;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//import java.io.*;
//
///**
// * 图片工具
// *
// * @author YY
// */
//@Slf4j
//public class ImageUtil {
//    private ImageUtil(){};
//
//    /**
//     * 将multipartFile文件转换成base格式
//     * @param file
//     * @return
//     */
//    public static String multipartToBase64(MultipartFile file) {
//        try {
//            if(!file.isEmpty()) {
//                BASE64Encoder encoder = new BASE64Encoder();
//                return encoder.encode(file.getBytes());
//            }
//        } catch (IOException e) {
//            log.error("图片转换成Base64数据发生错误:", e);
//            return null;
//        }
//
//        return null;
//    }
//
//    /**
//     * 将base64格式图片文件转换成multipartFile
//     * @param base64
//     * @return
//     */
//    public static MultipartFile base64ToMultipart(String base64) {
//        try {
//            String[] baseStrs = base64.split(",");
//
//            BASE64Decoder decoder = new BASE64Decoder();
//            byte[] b = decoder.decodeBuffer(baseStrs[1]);
//
//            for(int i = 0; i < b.length; ++i) {
//                if (b[i] < 0) {
//                    b[i] += 256;
//                }
//            }
//            return new Base64MultipartFile(b, baseStrs[0]);
//        } catch (IOException e) {
//            log.error("Base64数据转换成图片发生错误:", e);
//            return null;
//        }
//    }
//
//    /**
//     * 在图片文件添加水印并覆盖
//     * @param file
//     * @param text 文本
//     * @param fontName 字体
//     * @param fontStyle 字体风格
//     * @param fontSize 字体大小
//     * @param x 相对右下角的偏移量
//     * @param y 相对右下角的偏移量
//     * @return
//     */
//    public static boolean addWatermark(File file, String text,
//                                 String fontName, int fontStyle, int fontSize, int x, int y) {
////        try {
////            Image src = ImageIO.read(file);
////            BufferedImage image = addWatermark(src, text, fontName, fontStyle, fontSize, x, y);
////
////            FileOutputStream out = new FileOutputStream(file.getAbsolutePath());
////            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
////            encoder.encode(image);
////            out.close();
////
////            return true;
////        } catch (Exception e) {
////            log.error("添加水印失败！", e);
////        }
//
//        return false;
//    }
//
//    /**
//     * 给上传的文件添加水印
//     * @param multipartFile 上传的文件
//     * @param text 文本
//     * @param fontName 字体
//     * @param fontStyle 字体风格
//     * @param fontSize 字体大小
//     * @param x 相对右下角的偏移量
//     * @param y 相对右下角的偏移量
//     * @return
//     */
//    public static InputStream addWatermark(MultipartFile multipartFile, String text,
//                                       String fontName, int fontStyle, int fontSize, int x, int y) {
//        try {
//            Image src = ImageIO.read(multipartFile.getInputStream());
//            BufferedImage image = addWatermark(src, text, fontName, fontStyle, fontSize, x, y);
//
//            String originFileName = multipartFile.getOriginalFilename();
//            int lastSplit = originFileName.lastIndexOf(".");
//            String suffix = originFileName.substring(lastSplit + 1);
//
//            ByteArrayOutputStream bs = new ByteArrayOutputStream();
//            ImageOutputStream imOut = ImageIO.createImageOutputStream(bs);
//            ImageIO.write(image, suffix, imOut);
//            return new ByteArrayInputStream(bs.toByteArray());
//
//        } catch (Exception e) {
//            log.error("添加水印失败！", e);
//        }
//        return null;
//    }
//
//    /**
//     * 给上传的文件添加水印
//     * @param base64Image base64图片数据
//     * @param text 文本
//     * @param fontName 字体
//     * @param fontStyle 字体风格
//     * @param fontSize 字体大小
//     * @param x 相对右下角的偏移量
//     * @param y 相对右下角的偏移量
//     * @return
//     */
//    public static InputStream addWatermark(String base64Image, String text,
//                                           String fontName, int fontStyle, int fontSize, int x, int y) {
//        try {
//            MultipartFile multipartFile = base64ToMultipart(base64Image);
//            Image src = ImageIO.read(multipartFile.getInputStream());
//            BufferedImage image = addWatermark(src, text, fontName, fontStyle, fontSize, x, y);
//
//            String originFileName = multipartFile.getOriginalFilename();
//            int lastSplit = originFileName.lastIndexOf(".");
//            String suffix = originFileName.substring(lastSplit + 1);
//
//            ByteArrayOutputStream bs = new ByteArrayOutputStream();
//            ImageOutputStream imOut = ImageIO.createImageOutputStream(bs);
//            ImageIO.write(image, suffix, imOut);
//            return new ByteArrayInputStream(bs.toByteArray());
//
//        } catch (Exception e) {
//            log.error("添加水印失败！", e);
//        }
//        return null;
//    }
//
//    /**
//     * 添加水印
//     * @param image 原始图片
//     * @param text 文本
//     * @param fontName 字体
//     * @param fontStyle 字体风格
//     * @param fontSize 字体大小
//     * @param x 相对右下角的偏移量
//     * @param y 相对右下角的偏移量
//     * @return
//     */
//    private static BufferedImage addWatermark(Image image, String text, String fontName, int fontStyle, int fontSize, int x, int y) {
//        int width = image.getWidth(null);
//        int height = image.getHeight(null);
//        BufferedImage bufferedImage = new BufferedImage(width, height,
//                BufferedImage.TYPE_INT_RGB);
//        Graphics g = bufferedImage.createGraphics();
//        g.drawImage(image, 0, 0, width, height, null);
//        g.setColor(Color.WHITE);
//        g.setFont(new Font(fontName, fontStyle, fontSize));
//
//        g.drawString(text, width - fontSize * (text.length() + 1) - x, height - fontSize / 2 - y);
//        g.dispose();
//        return bufferedImage;
//    }
//
//    public static void main(String[] args) {
////        addWatermark(new File("D:/123.jpg"),"安徽伯仲信息科技有限公司",   null, Font.BOLD,  24, 0, 0);
//    }
//
//
//    public static class Base64MultipartFile implements MultipartFile {
//
//        private final byte[] imgContent;
//        private final String header;
//
//        public Base64MultipartFile(byte[] imgContent, String header) {
//            this.imgContent = imgContent;
//            this.header = header.split(";")[0];
//        }
//
//        @Override
//        public String getName() {
//            return UUIDutils.getUUID32() + "." + header.split("/")[1];
//        }
//
//        @Override
//        public String getOriginalFilename() {
//            return getName();
//        }
//
//        @Override
//        public String getContentType() {
//            return header.split(":")[1];
//        }
//
//        @Override
//        public boolean isEmpty() {
//            return imgContent == null || imgContent.length == 0;
//        }
//
//        @Override
//        public long getSize() {
//            return imgContent.length;
//        }
//
//        @Override
//        public byte[] getBytes() throws IOException {
//            return imgContent;
//        }
//
//        @Override
//        public InputStream getInputStream() throws IOException {
//            return new ByteArrayInputStream(imgContent);
//        }
//
//        @Override
//        public void transferTo(File dest) throws IOException, IllegalStateException {
//            new FileOutputStream(dest).write(imgContent);
//        }
//    }
//}
